A Refinement Approach for Correct-by-Construction Object-Oriented Programs
نویسندگان
چکیده
Refinement is a well-known approach for developing correct-by-construction software. It has been very successful for producing high quality code e.g., as implemented in the B tool. Yet, such refinement techniques are restricted in the sense that they forbid aliasing (and more generally sharing of data-structures), which often happens in usual programming language such as Java and C. We propose a sound approach for refinement in presence of aliases. Suitable abstractions of programs are defined by algebraic data types and the so-called model fields. These are related to concrete program data using coupling invariants. The soundness of the approach relies on methodologies for (1) controlling aliases and (2) checking side-effects, both in a modular way. Key-words: Formal Specification, Deductive verification, Data invariants, Abstraction, Refinement This work is partly supported by INRIA Collaborative Research Action (ARC) “CeProMi”, http://www.lri.fr/cepromi/ ∗ Lab. de Recherche en Informatique, Univ Paris-Sud, CNRS, Orsay, F-91405 † INRIA Saclay Île-de-France, F-91893 ‡ Institut Polytechnique de Grenoble, VERIMAG, Gières, F-38610 in ria -0 04 91 83 5, v er si on 1 14 J un 2 01 0 Une approche par raffinement pour le développement correct de programmes orientés objets Résumé : Le concept de raffinement, notion importante des méthodes formelles, permet le développement de logiciels corrects par construction. Il a été utilisé, avec succès, pour la production de code de haute qualité, par exemple, tel qu’il est implémenté dans l’atelier B. Néanmoins, de telles techniques de raffinement sont restreintes dans le sens où elles interdisent l’aliasing, et plus généralement le partage des structures de données, qui apparaît fréquemment dans les langages de programmation classiques comme C ou Java. On propose une approche sûre pour le raffinement en présence de partage. Des abstractions convenables sont définies par des types de données algébriques et ce qu’on appelle des champs modèles. Ces derniers sont reliés aux données concrêtes à l’aide d’un invariant de collage. La sûreté de notre approche s’appuie sur des méthodes pour (1) le contrôle du partage et ; (2) la gestion des effets de bord ; dans les deux cas de façon modulaire. Mots-clés : Spécification formelle, Vérification par preuve, Invariants de données, Abstraction, Raffinement in ria -0 04 91 83 5, v er si on 1 14 J un 2 01 0 A Refinement Approach for Correct-by-Construction Object-Oriented Programs 3
منابع مشابه
A Seamless Eiffel-Based Refinement Calculus for Object-Oriented Systems
The Eiffel language [4] can be used throughout the object-oriented software development process, for both specification and implementation. We outline work-in-progress on developing a refinement calculus for producing provably correct Eiffel programs from Eiffel specifications. We propose extensions to the calculus by integrating abstract data types as a front-end language that can be used for ...
متن کاملA Refinement Methodology for Object-Oriented Programs
Refinement is a well-known approach for developing correct-byconstruction software. It has been very successful for producing high quality code e.g., as implemented in the B tool. Yet, such refinement techniques are restricted in the sense that they forbid aliasing (and more generally sharing of data-structures), which often happens in usual programming languages. We propose a sound approach fo...
متن کاملrCOS: A refinement calculus of object systems
This article presents a mathematical characterization of object-oriented concepts by defining an observation-oriented semantics for a relational objectoriented language with a rich variety of features including subtypes, visibility, inheritance, type casting, dynamic binding and polymorphism. The language is expressive enough for the specification of object-oriented designs and programs. We als...
متن کاملRefactoring by Transformation
In this paper we present how refactoring of object-oriented programs can be accomplished by using refinement. Our approach is based on algebraic laws of an object-oriented language for refinement similar to Java. We follow a strategy involving data and algorithmic refinement of classes.
متن کاملDeveloping Reliable Software using Object - Oriented Formal Specification and Refinement
It is our view that reliability cannot be guaranteed in large, complex software systems unless formal methods are used. The challenge is to bring formal methods up to date with modern object-oriented techniques and make its use as productive as traditional methods. We believe that such a challenge can be met and we have developed the Escher Tool to demonstrate this. This paper describes some of...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
دوره شماره
صفحات -
تاریخ انتشار 2010